首页 > 其他分享 >用 git 管理 Datakit 配置

用 git 管理 Datakit 配置

时间:2022-11-10 18:22:53浏览次数:75  
标签:git log 仓库 配置 nginx Datakit conf

用 git 管理 Datakit 配置

什么是 Datakit

DataKit 是一款开源、一体式的数据采集 Agent, 它提供全平台操作系统 (Linux/Windows/macOS) 支持, 拥有全面数据采集能力, 涵盖主机、容器、中间件、Tracing、日志以及安全巡检等各种场景。

Datakit 支持使用 git 仓库的方式管理配置, 下面来实践一下。

本次实践用到的 git 地址:

Git 仓库的目录要求

  • gitrepos/repo-name/conf.d 用来存放采集器配置文件, 其下的子目录不做限制 (datakit.conf 不在 gitrepos 管理范围内);
  • gitrepos/repo-name/pipeline 用来存放 pipeline 脚本, 且只有该目录下第一层的 .p 才生效, 其下的子目录均不生效;
  • gitrepos/repo-name/python.d 用来存放 python 脚本;

以下将按这三个目录分成 3 个知识点进行实践。

本机是 Linux, 如果是其它操作系统可能会有些不同, 请根据实际情况适当调整。

实践 conf.d 目录知识点: 观测 nginx 基本信息

第 1 步: 配置 nginx 侧开启 status 功能

  1. 配置 nginx

/etc/nginx/nginx.conf:

...
http {
    ...
	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

    server{
        listen 80;
        server_name localhost;

        location /nginx_status {
            stub_status  on;
            allow 127.0.0.1;
            deny all;
        }
    }

	##
	# Gzip Settings
	##

	gzip on;
    ...
}
...
  1. 测试是否生效
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ sudo nginx -s reload

$ curl http://localhost/nginx_status
Active connections: 1
server accepts handled requests
 1 1 1
Reading: 0 Writing: 1 Waiting: 0

至此 nginx 侧配置是没啥问题了。

第 2 步: 准备 git 仓库

从 Datakit 配置里面复制一份 nginx 到 git 仓库中:

$ cp /usr/local/datakit/conf.d/nginx/nginx.conf.sample ./conf.d/nginx.conf

nginx.conf 文件内容修改如下:

# {"version": "1.4.19-256-gb42050b2a5", "desc": "do NOT edit this line"}

[[inputs.nginx]]
    url = "http://localhost/nginx_status"
    # ...

    [inputs.nginx.log]
    files = ["/var/log/nginx/access.log","/var/log/nginx/error.log"] # 此处打开, 填写 nginx 的 access.log 和 error.log 的全路径
    # ...
    [inputs.nginx.tags]
    # ...

保存并提交 git。

至此 git 仓库的文件结构如下:

$ tree # 查看 git 仓库文件结构
.
├── conf.d
│   └── nginx.conf

第 3 步: 配置 Datakit 侧

  1. 开启 git 的配置

/usr/local/datakit/conf.d/datakit.conf:

...
[git_repos]
  pull_interval = "5s"

  [[git_repos.repo]]
    enable = true # 启用
    url = "https://codechina.csdn.net/somebody/public.git" # 填仓库地址 (此仓库不需要密码)
    branch = "dkconf" # 使用 dkconf 这个分支
...

启动 Datakit: $ Datakit --start

第 4 步: 登录观测云官网效果

登录 观测云(https://console.guance.com/), 然后点击左侧功能栏里面的 "日志" --> "查看器", 即可以看到日志了:

nginx 基本信息

为了制造错误日志, 我访问了一个不存在的地址: curl http://localhost/not_exist

实践 pipeline 目录知识点: 自定义 nginx 展示信息

通过编写 Pipeline 脚本, 可以自定义切割出符合要求的结构化日志, 并把切割出来的字段作为标签使用, 通过标签字段, 我们可以快速筛选相关日志、进行关联分析, 帮助我们快速去定位问题并解决问题。

我们这里做个更简单的效果, 就是把字段名 client_ip 改成 client_ip2

原来:

client_ip

第 1 步: 复制 pipeline 文件到 git 仓库中并修改

$ cp /usr/local/datakit/pipeline/nginx.p ./pipeline/nginx.p

用文本编辑器打开 nginx.p 并全文替换 client_ipclient_ip2

保存并提交 git。

至此 git 仓库的文件结构如下:

$ tree # 查看 git 仓库文件结构
.
├── conf.d
│   ├── nginx.conf
├── pipeline
│   └── nginx.p

第 2 步: 登录观测云官网效果

登录 观测云(https://console.guance.com/), 然后点击左侧功能栏里面的 "日志" --> "查看器", 点击最新的一条日志, 可以看到已经生效了:

client_ip2

效果有一定延迟, 大概 2 分钟左右可以看到效果。

实践 python.d 目录知识点: 手写 Python 脚本汇报业务数据

pythond 是定时触发用户自定义 Python 采集脚本的一整套方案。在实际业务中, 你可以把想报的业务数据上报, 比方说过去一小时网站的新用户注册数等等。

我们这里做个简单的效果, 就是报随机数给观测云。

第 1 步: 编写 Python 脚本

这个脚本实现的功能很简单, 生成一个随机数, 然后调用 Datakit 的 Python SDK 上报给观测云:

hellopythond.py:

from datakit_framework import DataKitFramework
import random

class HelloPythond(DataKitFramework):
    __name = 'HelloPythond'
    interval = 10 # 每 10 秒钟采集上报一次。这个根据实际业务进行调节, 这里仅作演示。

    # if your datakit ip is 127.0.0.1 and port is 9529, you won't need use this,
    # just comment it.
    # def __init__(self, **kwargs):
    #     super().__init__(ip = '127.0.0.1', port = 9529)

    def run(self):
        rd = random.randint(1, 100) # 生成一个 1 到 100 之间的随机数

        data = [
          {
              "measurement": "random_number", # 指标名称。
              "tags": {
                "tag_name": "tag_value", # 自定义 tag, 根据自己想要标记的填写, 我这里是随便写的
              },
              "fields": {
                "number": rd, # 指标, 这里是随机数
              },
          },
        ]

        in_data = {
            'M':data,
            'input': "pyfromgit"
        }

        return self.report(in_data) # you must call self.report here

这个文件存放在 [git 仓库目录]/python.d/hellopythond/hellopythond.py 下。

注意 .py 文件的上层还有一个 模块名 的文件夹。这里的是 hellopythond, 即文件结构为 hellopythond\hellopythond.py。我第一次在这里采坑了, 排查了好久。这样设计的原因我想是为了方便源代码分为多个文件存放。

保存并提交 git。

至此 git 仓库的文件结构如下:

$ tree # 查看 git 仓库文件结构
.
├── conf.d
│   ├── nginx.conf
├── pipeline
│   └── nginx.p
├── python.d
│   └── hellopythond
│       └── hellopythond.py

第 2 步: 配置 Datakit 侧

$ cp /usr/local/datakit/conf.d/pythond/pythond.conf.sample ./conf.d/pythond.conf

用文本编辑器编辑该文件。

pythond.conf:

# {"version": "1.4.19-256-gb42050b2a5", "desc": "do NOT edit this line"}

[[inputs.pythond]]

	# Python 采集器名称
	name = 'pyfromgit'  # required

	# 运行 Python 采集器所需的环境变量
	#envs = ['LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH',]

	# Python 采集器可执行程序路径(尽可能写绝对路径)
	cmd = "python3" # required. python3 is recommended.

	# 用户脚本的相对路径(填写文件夹, 填好后该文件夹下一级目录的模块和 py 文件都将得到应用)
	dirs = ["hellopythond"] # 这里填的是文件夹名, 即类名

保存并提交 git。

至此 git 部分已配置完毕, 目前的文件结构为:

$ tree
.
├── conf.d
│   ├── nginx.conf
│   └── pythond.conf
├── pipeline
│   └── nginx.p
├── python.d
│   └── hellopythond
│       └── hellopythond.py

第 3 步: 登录观测云官网效果

登录 观测云(https://console.guance.com/), 然后点击左侧功能栏里面的 "指标" --> "指标分析", 然后在 "指标" 的下拉框里面选择指标名(这里是 random_number), 就可以看到已经生效了:

random_number

使用感受

总的来说, 可以对我目前的一些项目进行观测, 完全够用, 关键还免费。

不过它网站上功能有些太多了, 待我一一体验后再来这里写笔记。

FAQ

Datakit 与观测云的关系

观测云是一套可观测性解决方案的网站。而 Datakit 是其客户机的采集器软件, 需要运行在客户测采集数据, 然后将这些数据上报给观测云进行展示或者告警(短信告警要收费)。

pythond 与 python.d 的关系

pythond 是 Datakit 一个采集器的名字。python.d 是 git 仓库目录下的一个文件夹, 是存放 python 脚本的目录。

参考资料

标签:git,log,仓库,配置,nginx,Datakit,conf
From: https://www.cnblogs.com/ivydoe/p/16877984.html

相关文章

  • 记录--Uniapp + TypeScript 配置文档
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助0目标使用uniapp +TypeScript为基础栈进行小程序开发uniapp是一个使用Vue.js开发所有前端......
  • Centos mysql主从复制配置
    1、需要准备两台mysql服务器。我这里主机mt1 从机mt2查看两个服务器的防火墙是否关闭;如果没有关闭需要关闭。查看防火墙状态命令。statusfirewalld;如果是通过虚拟机克隆......
  • ubuntu的网络配置
    一、修改ubuntu主机名root@ubuntu1804:~#hostnamectlset-hostnameubuntu1804.magedu.orgroot@ubuntu1804:~#cat/etc/hostnameubuntu1804.magedu.orgroot@ubuntu1804:~#......
  • JVS三方登录配置说明(钉钉扫码登录介绍)
    JVS支持多种登录模式,默认支持账号密码、手机号+动态验证码(前提配置短信通道),除了这两种模式,还支持钉钉、企业微信、公众号、ldap。下面介绍下对等等的配置,实现的效果如图所......
  • Ubuntu22.04配置静态IP
    1打开配置文件sudovim/etc/netplan/01-network-manager-all.yaml2输入以下配置network:version:2renderer:NetworkManagerethernets:ens33:......
  • 使用 Gitea + Drone CI 自动部署 Hexo 静态网站到 Cloudflare Pages
    前段时间使用Hexo重建了个人博客。我之前一直使用VSCode在本地写博客,用git推送到GitHub存档,每次推送的之后都由GitHubActions自动构建Hexo静态网站然后发布......
  • NFS服务配置
    一、安装CENTOS或RHL默认就已安装,如果没有安装的话,通过yum安装即可:yuminstallnfs-utilsyuminstallportmapUBUNTU系统,通过apt-get安装:apt-getinstallnfs-kernel......
  • Cobbler服务配置
    安装环境:操作系统:CentOS7.9.2009一、安装软件包yuminstallepel-releaseyuminstallcobblercobbler-webdhcp(如使用外部DHCP可不安装)httpdtftp-serverxinetd二......
  • nginx配置加载视频和图片
    注意:系统:Ubuntu18.04Nginx版本:1.14.0 1.进入到配置目录/etc/nginx/sites-enabled2.打开/etc/nginx/sites-enabled目录下default文件3.在default添加如下类容就可......
  • 124-常用的gitignore
    logs.idea.gittargetdist.mvn.classpath.factorypath.apt_generated.project.settings.springBeans.sts4-cache*.iws*.iml*.iprThumbs.dbehthumbs.dbDesk......