PS E:\vagrant\prometheus> dir 目录: E:\vagrant\prometheus Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/8/1 12:24 .vagrant d----- 2021/5/31 15:37 mysqld_exporter -a---- 2021/8/1 22:04 3798472 golang-github-prometheus-node_exporter-0.18.1-6.el7.x86_64.rpm -a---- 2021/8/2 0:39 129 grafana_start.sh -a---- 2021/8/1 17:53 266 mysql.sql -a---- 2021/8/1 19:49 7242382 mysqld_exporter-0.13.0.linux-amd64.tar.gz -a---- 2021/8/1 20:34 162 mysqld_exporter_start_deamon.sh -a---- 2021/8/1 23:50 1102 prometheus.yml -a---- 2021/8/1 17:58 118 prometheus_start.sh -a---- 2021/8/1 23:52 4668 Vagrantfile 目录: E:\vagrant\prometheus\mysqld_exporter Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/5/31 15:36 11357 LICENSE -a---- 2021/5/31 15:30 14955898 mysqld_exporter -a---- 2021/5/31 15:36 65 NOTICE
file: Vagrant
# -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure("2") do |config| # The most common configuration options are documented and commented below. # For a complete reference, please see the online documentation at # https://docs.vagrantup.com. # Every Vagrant development environment requires a box. You can search for # boxes at https://vagrantcloud.com/search. config.vm.box = "centos/7" config.vm.hostname = "prometheus" # Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs # `vagrant box outdated`. This is not recommended. # config.vm.box_check_update = false # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine. In the example below, # accessing "localhost:8080" will access port 80 on the guest machine. # NOTE: This will enable public access to the opened port # config.vm.network "forwarded_port", guest: 80, host: 8080 # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine and only allow access # via 127.0.0.1 to disable public access # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" # Create a private network, which allows host-only access to the machine # using a specific IP. # config.vm.network "private_network", ip: "192.168.33.10" # Create a public network, which generally matched to bridged network. # Bridged networks make the machine appear as another physical device on # your network. config.vm.network "public_network", ip: "192.168.1.13", bridge: "Intel(R) Wi-Fi 6 AX200 160MHz" # Share an additional folder to the guest VM. The first argument is # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. # config.vm.synced_folder "../data", "/vagrant_data" # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. # Example for VirtualBox: # config.vm.provider "virtualbox" do |vb| # Display the VirtualBox GUI when booting the machine vb.gui = false # Customize the amount of memory on the VM: vb.memory = "4096" vb.cpus = "4" end # # View the documentation for the provider you are using for more # information on available options. # Enable provisioning with a shell script. Additional provisioners such as # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the # documentation for more information about their specific syntax and use. config.vm.provision "shell", inline: <<-SHELL # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭selinux sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 setenforce 0 # 临时 # 安装docker yum install -y docker vim wget systemctl enable docker systemctl start docker # 拉取相关镜像 # docker pull mysql # docker pull prom/prometheus # docker pull prom/mysqld-exporter # docker pull grafana/grafana # 1、node_exporter: # 链接:https://github.com/prometheus/node_exporter#rhelcentosfedora # 使用yum安装 # curl -Lo /etc/yum.repos.d/_copr_ibotty-prometheus-exporters.repo https://copr.fedorainfracloud.org/coprs/ibotty/prometheus-exporters/repo/epel-7/ibotty-prometheus-exporters-epel-7.repo # yum -y install node_exporter # 使用rpm安装 rpm -ivh /vagrant/golang-github-prometheus-node_exporter-0.18.1-6.el7.x86_64.rpm # 启动node_exporter systemctl enable node_exporter systemctl start node_exporter # 2、MySQL8 # 安装 & 启动 rpm -ivh https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm yum install -y mysql-community-server systemctl enable mysqld systemctl start mysqld # 3、mysqld_exporter # 下载到/home/vagrant # wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz SHELL end
注:已经设置开机启动
https://prometheus.io/download/
https://github.com/prometheus/node_exporter
注:已经设置开机启动
# 查找mysql初始密码 $ sudo grep 'temporary password' /var/log/mysqld.log
https://prometheus.io/download/
https://github.com/prometheus/mysqld_exporter
# 使用初始密码登录 mysql -uroot -p$PASSWORD
file: mysql.sql
SET GLOBAL validate_password.policy=LOW; ALTER USER 'root'@'localhost' IDENTIFIED BY 'redhat.com'; CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
file: mysqld_exporter_start_deamon.sh
export DATA_SOURCE_NAME='exporter:XXXXXXXX@(prometheus:3306)/' chmod u+x /vagrant/mysqld_exporter/mysqld_exporter nohup /vagrant/mysqld_exporter/mysqld_exporter &
https://github.com/prometheus/prometheus
https://prometheus.io/docs/prometheus/latest/installation/
file: prometheus.yml
# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['192.168.1.13:9090'] - job_name: 'agent_node' static_configs: - targets: ['192.168.1.13:9100'] - job_name: 'agent_mysql8' static_configs: - targets: ['192.168.1.13:9104']
file: prometheus_start.sh
docker run -d \ -p 9090:9090 \ -v /vagrant/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus
https://grafana.com/docs/grafana/latest/installation/docker/
file: grafana_start.sh
docker run -d \ -p 3000:3000 \ -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \ grafana/grafana
https://www.bilibili.com/video/BV16J411z7SQ