• 1-- prometheus安装、图形化界面


    一、监控简介

    监控就是实时的帮助我们来监控或者探测我们部署的服务是否正常运行。

    常用的监控

    - zabbix
      - 组件比较全,缺点:性能不高
      - 当zabbix监控大型集群的时候,怎么优化
      - 当数据库中一个表中数据超过2000w的时候,数据库的性能急剧下降
    - 阿里云云监控
    - 腾讯云蓝鲸监控
    - 普罗米修斯(prometheus)
      - 性能比较高,底层使用(时序数据库)
      - 原生支持监控容器
    

    普罗米修斯(prometheus)

    官网:https://prometheus.io/

    下载连接:https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz

    普罗米修斯监控分为两种情况:

     1、携带metrics接口的服务(kubernetes、ETCD、Docker)
    
     2、不携带metrics接口的服务(Nginx、mysql、Linux主机),针对于不携带metrics接口的服务,我们需要安装一个exporter插件。
    

    二、部署prometheus

    1.prometheus主机上部署软件

    # 下载
    [root@prometheus opt]# wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz
    或者 wget https://github.com/prometheus/prometheus/releases/download/v2.25.0/prometheus-2.25.0.linux-amd64.tar.gz
    
    # 解压
    [root@prometheus opt]# tar -xf prometheus-2.27.1.linux-amd64.tar.gz -C /usr/local/
    [root@prometheus ~]# cd /usr/local/
    
    # 建立超链接
    [root@prometheus local]# ln -s /usr/local/prometheus-2.27.1.linux-amd64 /usr/local/prometheus
    
    [root@prometheus local]# ll
    lrwxrwxrwx  1 root root  30 Jun  2 09:49 prometheus -> prometheus-2.25.0.linux-amd64/
    
    # 创建环境变量
    [root@prometheus local]# cat >> /etc/profile <<EOF
    export PROMETHEUS_HOME=/usr/local/prometheus
    PATH=$PATH:$PROMETHEUS_HOME
    export PATH
    EOF
    
    #重载环境变量文件
    [root@prometheus ~]# source /etc/profile
    
    # 测试安装成功
    [root@prometheus ~]# prometheus --version
    prometheus, version 2.25.0 (branch: HEAD, revision: a6be548dbc17780d562a39c0e4bd0bd4c00ad6e2)
      build user:       root@615f028225c9
      build date:       20210217-14:17:24
      go version:       go1.15.8
      platform:         linux/amd64
      
    #查看配置文件(prometheus.yml)
    [root@prometheus ~]# cd /usr/local/prometheus
    [root@prometheus prometheus]# ll
    total 167984
    drwxr-xr-x 2 3434 3434       38 Feb 18 00:11 console_libraries
    drwxr-xr-x 2 3434 3434      173 Feb 18 00:11 consoles
    -rw-r--r-- 1 3434 3434    11357 Feb 18 00:11 LICENSE
    -rw-r--r-- 1 3434 3434     3420 Feb 18 00:11 NOTICE
    -rwxr-xr-x 1 3434 3434 91044140 Feb 17 22:19 prometheus
    -rw-r--r-- 1 3434 3434     1170 Jun  2 18:16 prometheus.yml
    -rwxr-xr-x 1 3434 3434 80948693 Feb 17 22:21 promtool
    
    #启动prometheus
    [root@prometheus ~]# prometheus --config.file=/usr/local/prometheus/prometheus.yml
    
    #访问查看是否监控
    http://192.168.15.71:9090/targets
    
    #查看接口数据
    http://192.168.15.71:9090/metrics
    
    #创建promethets的systemd启动文件"
    cat >>/usr/lib/systemd/system/prometheus.service <<EOF
    [Unit]
    Description=https://prometheus.io
    
    [Service]    
    Restart=on-failure
    ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
    
    [Install]
    WantedBy=multi-user.target  
    EOF
    
    #.启动promethets"
    systemctl daemon-reload 
    systemctl enable --now prometheus.service
    

    2.使用普罗米修斯监控Linux主机 (web集群)

    # 下载
    [root@web01 opt]# wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
    
    #解压
    [root@web01 opt]# tar -xf node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local/
    [root@prometheus ~]# cd /usr/local/
    
    #建立软连接
    [root@web01 local]# ln -s /usr/local/node_exporter-1.1.2.linux-amd64/ /usr/local/node_exporter
    
    #添加环境变量
    [root@web01 local]# vim /etc/profile
    ... ...
    export NODE_EXPORTER=/usr/local/node_exporter
    export PATH=$PATH:$NODE_EXPORTER
    
    #重载配置文件
    [root@web01 ~]# source /etc/profile
    
    #启动prometheus监控(9100端口)
    [root@web01 ~]# node_exporter 
    level=info ts=2021-06-02T07:01:08.509Z caller=node_exporter.go:195 msg="Listening on" address=:9100
    
    #创建systemd服务
    cat > /etc/systemd/system/node_exporter.service <<EOF
    [Unit]
    Description=This is prometheus node exporter
    After=node_exporter.service
    
    [Service]
    Type=simple
    ExecStart=/usr/local/node_exporter/node_exporter
    ExecReload=/bin/kill -HUP
    KillMode=process
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    #.启动node_exporter服务"
    systemctl daemon-reload 
    systemctl enable --now node_exporter.service
    
    参数:
    	--web.listen-address=":9100" 	#修改默认端口,防止冲突
    	--web.telemetry-path="/metrics" #获取metric信息的url,默认是/metrics,若需要修改则通过此参数
        --log.level="info" 			    #设置日志级别
        --log.format="logger:stderr"     #设置打印日志的格式,若有自动化日志提取工具可以使用这个参数规范日志打印的格式
    

    3.将Linux主机的exporter插件添加至Prometheus软件服务

    [root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml 
      - job_name: 'Linux Node'      # 添加监控项的名字
        static_configs:
          - targets:
            - "172.16.1.7:9100"     # 监控主机的ip地址和端口号
            - "172.16.1.8:9100"
            - "172.16.1.9:9100"
            
     #重载prometheus
    [root@prometheus ~]# prometheus --config.file=/usr/local/prometheus/prometheus.yml  
    
    #访问查看是否监控
    http://192.168.15.71:9090/targets
    

    4.使用Garafana展示数据

    Garafana是业内做数据展示挺好的一款产品

    下载网站:https://grafana.com/get/?plcmt=top-nav&cta=downloads

    [root@prometheus opt]# rz -E rafana-7.3.6-1.x86_64.rpm
    
    [root@prometheus opt]# yum install -y grafana-7.3.6-1.x86_64.rpm
    
    [root@prometheus opt]# systemctl start grafana-server.service
    
    [root@prometheus opt]# netstat -tnlp                   
    tcp6       0      0 :::3000                 :::*                    LISTEN      10137/grafana-serve 
    #访问
    HTTPS://192.168.15.71:3000
    账号和密码默认是admin
    

    监控Linux主机单个状态信息

    监控Linux主机整体的状态信息

    Prometheus各种展示页面状态码: https://grafana.com/grafana/dashboards?dataSource=prometheus

    5.prometheus监控数据库

    Prometheus监控Mysql数据库官网教程:https://github.com/prometheus/mysqld_exporter

    #数据库的版本要求:
    - mysql >= 5.6
    - mariadb >= 10.2
    
    #上传解压包
    [root@db01 opt]# rz -E
    -rw-r--r-- 1 root root 7121565 Apr 22 21:33 mysqld_exporter-0.12.1.linux-amd64.tar.gz
    [root@db01 opt]# tar -xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
    [root@db01 opt]# cd /usr/local/
    [root@db01 local]# ll
    drwxr-xr-x  2 3434 3434 58 Jul 29  2019 mysqld_exporter-0.12.1.linux-amd64
    #做软连接
    [root@db01 local]# ln -s /usr/local/mysqld_exporter-0.12.1.linux-amd64/ /usr/local/mysqld_exporter
     
    #创建用户并授权以及查看用户权限
    [root@db01 ~]# mysql -uroot -p111
    
    MariaDB [(none)]> create user 'exporter'@'%' identified by '123';
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [(none)]> grant process, replication client, select on *.* to 'exporter'@'%';
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [(none)]> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    MariaDB [mysql]> select host,user from user;
    +------------+----------+
    | host       | user     |
    +------------+----------+
    | %          | exporter |
    | 127.0.0.1  | root     |
    | 172.16.1.% | www      |
    | ::1        | root     |
    | db01       |          |
    | db01       | root     |
    | localhost  |          |
    | localhost  | root     |
    +------------+----------+
    8 rows in set (0.00 sec)
    
    #添加文件
    [root@db01 mysqld_exporter]# vim .my.cnf
    [client]
    host=172.16.1.51
    user=exporter
    password=123
    
    #监控成功(9104端口)
    [root@db01 mysqld_exporter]# ./mysqld_exporter  --config.my-cnf="/usr/local/mysqld_exporter/.my.cnf"
    INFO[0000] Starting mysqld_exporter (version=0.12.1, branch=HEAD, revision=48667bf7c3b438b5e93b259f3d17b70a7c9aff96)  source="mysqld_exporter.go:257"
    INFO[0000] Build context (go=go1.12.7, user=root@0b3e56a7bc0a, date=20190729-12:35:58)  source="mysqld_exporter.go:258"
    INFO[0000] Enabled scrapers:  
    INFO[0000] Listening on :9104                            source="mysqld_exporter.go:283"
    

    6.将Mysql主机的exporter插件添加至Prometheus软件服务

    [root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml 
      - job_name: 'Mysql server'
        static_configs:
          - targets:
            - "172.16.1.51:9104"
    #重载prometheus
    [root@prometheus ~]# prometheus --config.file=/usr/local/prometheus/prometheus.yml
    
    #创建systemdqldmysqld_exporter.service务"
    cat >> /usr/lib/systemd/system/mysqld_exporter.service <<EOF
    [Unit]
    Description=Prometheus
    
    [Service]
    Environment=DATA_SOURCE_NAME=root:123@(172.16.1.18:3306)/
    ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf --web.listen-address=:9104
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    #启动node_exporter服务"
    systemctl daemon-reload 
    systemctl enable --now mysqld_exporter.service
    
    # 普罗米修斯是通过mysql_exporter来找mariadb进行获取数据的,所以要给它授权(用户名可自定义,与.my.cnf对应)
    # (注意:授权ip为localhost,因为不是prometheus服务器来直接找mariadb 获取数据,而是prometheus服务器找mysql_exporter,mysql_exporter 再找mariadb。所以这个localhost是指的mysql_exporter的IP)
    

    7.Mysql主机状态添加至Garafana展示

    https://grafana.com/grafana/dashboards

    8.redis主机监控

    [root@jenkins ~]# git clone https://github.com/oliver006/redis_exporter.git
    
    [root@jenkins ~]# ll
    drwxr-xr-x  7 root root      239 Aug 31 11:23 redis_exporter
    
    [root@jenkins ~]# cd redis_exporter/
    [root@jenkins redis_exporter]# ls
    contrib  exporter  go.sum   main.go   README.md
    docker   go.mod    LICENSE  Makefile  release-github-binaries.sh
    
    [root@jenkins redis_exporter]# export GOPROXY=https://mirrors.aliyun.com/goproxy/   #golang阿里云代理添加至环境变量
    [root@jenkins redis_exporter]# go build .      #编译 
    
    [root@jenkins redis_exporter]# ./redis_exporter --version
    INFO[0000] Redis Metrics Exporter <<< filled in by build >>>    build date: <<< filled in by build >>>    sha1: <<< filled in by build >>>    Go: go1.15.14    GOOS: linux    GOARCH: amd64 
    
    [root@jenkins redis_exporter]# ./redis_exporter -redis.addr "redis://192.168.15.14:6379" #监控redis主机
    
    [root@jenkins redis_exporter]# mv redis_exporter /usr/local/bin/
    
    [root@jenkins redis_exporter]# cd /usr/lib/systemd/system
    [root@jenkins system]# vim redis-exporter.service
    [Unit]
    Description=This is prometheus redis exporter
    After=node_exporter.service
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/redis_exporter -redis.addr "redis://192.168.15.14:6379"
    ExecReload=/bin/kill -HUP
    KillMode=process
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
    [root@jenkins system]# systemctl daemon-reload
    [root@jenkins system]# systemctl start redis-exporter.service
    
    [root@jenkins system]# netstat -lnutp
    ... ...
    tcp6       0      0 :::9121                 :::*                    LISTEN      40279/redis_exporte 
    
    #去prometheus主机上添加配置
    [root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml 
    - job_name: "RedisDB"
        static_configs:
          - targets:
            - "192.168.15.15:9121"
    
    [root@prometheus ~]# systemctl restart prometheus
    

    携带metircs接口的服务流程

      1.将外部服务,接入到集群中,需要用到EndPoints
      2.使用EndPoints关联Service
      3.使用Service注册一个ServiceMoniter
      4.ServiceMoniter自动注入到k8s集群之中
      5.从而实现容器化的Prometheus自动发现
    
      注意:监控ETCD需要证书,挂载到prometheus-k8s容器中
    

    不携带metircs接口的服务流程

      1.在外部或者容器中,部署exporter,实现一个metircs接口服务
      2.将metircs接口服务,接入到集群中,需要用到EndPoints
      3.使用EndPoints关联Service
      4.使用Service注册一个ServiceMoniter
      5.ServiceMoniter自动注入到k8s集群之中
      6.从而实现容器化的Prometheus自动发现
    
  • 相关阅读:
    [易语言] 六边形扫雷游戏实战开发
    [web开发] 利用微信小程序开发上海大学失物招领平台
    [web开发] Vue + spring boot + echart 微博爬虫展示平台
    [web开发] Vue+Spring Boot 上海大学预约系统开发记录
    [神经网络]一步一步使用Mobile-Net完成视觉识别(一)
    Python中操作ini配置文件
    python操作mySQL数据库
    使用python和selenium写一个百度搜索的case
    功能测试的过程中有关数据安全性的检查点
    python主流测试框架的简介
  • 原文地址:https://www.cnblogs.com/caodan01/p/14874327.html
Copyright © 2020-2023  润新知