• prometheus进程监控


    插件地址:https://github.com/ncabatoff/process-exporter

    1、安装部署

    cd /usr/local
    wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.2/process-exporter-0.7.2.linux-amd64.tar.gz
    tar -zxvf process-exporter-0.7.2.linux-amd64.tar.gz
    mv process-exporter-0.7.2.linux-amd process-exporter

    2、创建启动脚本

    vi /usr/lib/systemd/system/process-exporter.service
    [Unit]
    Description=redis_exporter
    Documentation=https://github.com/ncabatoff/process-exporter
    After=network.target
    
    [Service]
    Type=simple
    User=prometheus
    ExecStart=/usr/local/process-exporter/process-exporter -config.path /usr/local/process-exporter/process-exporter.yml
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target

    启动服务

    systemctl daemon-reload
    systemctl start redis_exporter
    systemctl status redis_exporter
    systemctl enable redis_exporter
    ss -tulnp | grep 9256

    编写配置文件

    process_names:
    
    - matcher1
    - matcher2

    例如:监控所有的服务进程

     process_names:
       - name: "{{.Comm}}"
         cmdline:
           - '.+'

    监控进程名为test程序

        process_names:
          - name: "{{.Matches}}"
            cmdline:
            - 'test'

    配置模板选项如下:

    {{.Comm}} 包含原始可执行文件的basename,/proc//stat 中的换句话说,2nd 字段

    {{.ExeBase}} 包含可执行文件的basename

    {{.ExeFull}} 包含可执行文件的完全限定路径

    {{.Username}} 包含有效用户的用户名

    {{.Matches}} 映射包含应用命令行tlb所产生的所有匹配项

           process_names中的每个项目都必须包含一个或多个选择器(comm,exe或cmdline), 如果存在多个选择器,则它们必须全部匹配。 每个选择器都是一个字符串列表,用于与进程的comm,argv [0]匹配;对于cmdline,则是一个适用于命令行的正则表达式。 cmdline regexp使用Go语法。

         对于comm和exe,字符串列表是一个OR,这意味着与任何字符串匹配的任何进程都将添加到该项目的组中。

         对于cmdline,正则表达式列表为AND,表示它们都必须匹配。 正则表达式中的任何捕获组都必须使用?P <name>选项为捕获分配一个名称,该名称用于填充.Matches。

    验证

    curl localhost:9256/metrics

    例如:> ps -ef | grep redis 

    redis 771 1 0 Jun05 ? 00:45:49 /usr/bin/redis-server *:6379

    {{.Comm}} groupname="redis-server" exe或者sh文件名称
    {{.ExeBase}} groupname="redis-server *:6379" /
    {{.ExeFull}} groupname="redis-server *:6379" ps中进程完成信息
    {{.Username}} groupname="redis" 使用进程所属的用户进行分组
    {{.Matches}} groupname="map[:redis]" 表示匹配到关键字"redis"

    Grafana图表显示:

    process-exporter对应的dashboard为:https://grafana.com/grafana/dashboards/249

    计算

    namedprocess_namegroup_num_threads

  • 相关阅读:
    这一次搞懂Spring自定义标签以及注解解析原理
    为什么要谨慎使用Arrays.asList、ArrayList的subList?
    【踩坑系列】使用long类型处理金额,科学计数法导致金额转大写异常
    小心使用 Task.Run 解惑篇
    小心使用 Task.Run 续篇
    为什么要小心使用 Task.Run
    Visual Studio 调试技巧之即时窗口的妙用
    审计系统的一剂良方——事件溯源
    [C#.NET 拾遗补漏]13:动态构建LINQ查询表达式
    再聊 Blazor,它是否值得你花时间学习
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/13595146.html
Copyright © 2020-2023  润新知