通过docker搭建lamp+wordpress+ELK监控
實驗要求:docker搭建LAMP +wordpress,有監控,日志放在另外一臺服務器上, 使用ELK進行日志收集展示
192.168.100.128 lamp+kabana
192.168.100.129 docker-lamp +wordpress + logstash +zabbix-agent
192.168.100.130 zabbix + elasticsearch
一、配置環境
1.先進行安裝docker
[root@localhost docker]# yum -y install docker2.進行配置docker的加速鏡像
[root@localhost docker]# cd /etc/docker/ [root@localhost docker]# vim daemon.json { "registry-mirrors": ["https://yol1de5p.mirror.aliyuncs.com"], "insecure-registries": ["192.168.100.128"] } ~docker進行啟動和開機自啟
[root@localhost docker]# systemctl start docker [root@localhost docker]# systemctl enable docker查看查看鏡像是否可用
[root@localhost docker]# docker info Containers: 0Running: 0Paused: 0Stopped: 0 Images: 0 Server Version: 1.13.1 Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueNative Overlay Diff: true Logging Driver: journald Cgroup Driver: systemd Plugins: Volume: localNetwork: bridge host macvlan null overlay Swarm: inactive Runtimes: docker-runc runc Default Runtime: docker-runc Init Binary: /usr/libexec/docker/docker-init-current containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1) runc version: 66aedde759f33c190954815fb765eedc1d782dd9 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f) init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574) Security Options:seccompWARNING: You're not using the default seccomp profileProfile: /etc/docker/seccomp.jsonselinux Kernel Version: 3.10.0-862.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 Number of Docker Hooks: 3 CPUs: 2 Total Memory: 1.779 GiB Name: localhost.localdomain ID: PQOY:ADSX:QEGQ:RJGC:4ECW:3X6S:BYMF:3AEH:WXBW:ZW5G:CVRI:VINM Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries:192.168.100.128127.0.0.0/8 Registry Mirrors:https://yol1de5p.mirror.aliyuncs.com Live Restore Enabled: false Registries: docker.io (secure)二、 拉去mysql和php鏡像
[root@localhost docker]# docker pull mysql [root@localhost docker]# docker pull php:7.2-apache三、創建網絡
[root@localhost docker]# docker network create lamp查看網絡
[root@localhost docker]# docker network ls NETWORK ID NAME DRIVER SCOPE f81b6f00fd07 bridge bridge local 3b6ec92601a8 host host local 9783e9b74d27 lamp bridge local 248da2b86740 none null local四、創建生成mysql和php容器的腳本
先做個文件夾
[root@localhost ~]# mkdir mysql_php [root@localhost ~]# cd mysql_php/進行編寫腳本
[root@localhost mysql_php]# vim docker_lamp.sh #!/bin/bashfunction mysql() {docker run --name mysql --net lamp -p 3306:3306 \-v /data/docker/mysql/data:/var/lib/mysql \-v /data/docker/mysql/conf:/etc/mysql/conf.d \-v /data/docker/mysql/logs:/logs \-e MYSQL_ROOT_PASSWORD=test123456 \-d mysql:latest --character-set-server=utf8 }function httpd_php() {docker run --name httpd-php --net lamp -p 80:80 \-v /data/docker/httpd/conf:/etc/apache2/sites-enabled \-v /data/docker/www:/var/www/html \-v /data/docker/httpd/logs:/var/log/apache2 \-d php:7.2-apache }$1啟動mysql和php容器(啟動容器之前首先關閉selinux【setenforce 0】)
[root@localhost mysql_php]# sh docker_lamp.sh mysql dcaea8e2efe8832ac863d73c728f15799f57072e9b66174626a706ba9a51152b [root@localhost mysql_php]# sh docker_lamp.sh httpd_php 52ff6c908d0d042030c9a535c55638566202cc9472bd873e0773279dad8b5f7c查看容器
[root@localhost mysql_php]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 21f6d844d9e2 php:7.2-apache "docker-php-entryp..." About a minute ago Up About a minute 0.0.0.0:80->80/tcp httpd-php 7bfa31aadbe1 mysql:latest "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, 33060/tcp mysql寫一個php測試頁進行測試
[root@localhost mysql_php]# echo "<?php phpinfo(); ?>" > /data/docker/www/index.php 通過瀏覽器訪問http://192.168.2.226修改mysql密碼加密方式為mysql_native_password
[root@localhost ~]# vim /data/docker/mysql/conf/docker_mysql.conf [mysqld] default-authentication-plugin=mysql_native_password五、數據庫操作
登陸mysql容器,創建、配置wordpress數據庫
[root@localhost ~]# docker exec -it mysql /bin/bash root@7bfa31aadbe1:/# mysql -uroot -ptest123456mysql> create database wordpress; mysql> create user wps@localhost identified by '123456'; mysql> grant all privileges on wordpress.* to wps@localhost; mysql> create user wps@172.18.0.1 identified by '123456'; mysql> grant all privileges on wordpress.* to wps@172.18.0.1; mysql> alter user wps@172.18.0.1 identified with mysql_native_password by '123456'; mysql> flush privileges;六、配置wordpress博客系統
下載wordpress包并解壓
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz tar -zxvf wordpress-4.9.4-zh_CN.tar.gz -C /data/docker/www/配置wordpress博客*
修改wp-config-sample.php配置
[root@localhost wordpress]# cd /data/docker/www/wordpress/ [root@localhost wordpress]# mv wp-config-sample.php wp-config.php [root@localhost wordpress]# vim wp-config.php #修改以下內容/ WordPress數據庫的名稱 */ define('DB_NAME', 'wordpress');/ MySQL數據庫用戶名 */ define('DB_USER', 'wps');/ MySQL數據庫密碼 */ define('DB_PASSWORD', '123456');/ MySQL主機 */ define('DB_HOST', '172.18.0.1');/ 創建數據表時默認的文字編碼 */ define('DB_CHARSET', 'utf8');/ 數據庫整理類型。如不確定請勿更改 */ define('DB_COLLATE', '');mysql容器里安裝mysqli擴展
[root@localhost ~]# docker exec -it httpd-php /bin/bash apt-get update apt-get install libpng-dev cd /usr/local/bin/ ./docker-php-ext-install gd mysqli ./docker-php-ext-enable gd mysqli exit docker restart httpd-php(啟動之后關閉防火墻)修改wp-db.php文件,將mysql_connect替換為mysqli_connect
[root@localhost ~]# cd /data/docker/www/wordpress/ [root@localhost wordpress]# sed -i "s/mysql_connect/mysqli_connect/g" wp-includes/wp-db.php之后通過瀏覽器測試 :http://本機ip/wordpress 如果成功會出現一下界面
搭建配置zabbix
傳入zabbix的源
[root@localhost ~]# cd /etc/yum.repos.d [root@localhost yum.repos.d]# vim zabbix.repo [zabbix] name=Zabbix Official Repository - $basearch baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591[zabbix-debuginfo] name=Zabbix Official Repository debuginfo - $basearch baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/debuginfo/ enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 gpgcheck=0[zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/ enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX gpgcheck=0在web端安裝zabbix-agent并設置開機自啟
[root@localhost yum.repos.d]# yum -y install zabbix-agent[root@localhost yum.repos.d]# vim /etc/zabbix/zabbix_agentd.confServer=192.168.100.130ServerActive=192.168.100.130[root@localhost yum.repos.d]# systemctl start zabbix-agent[root@localhost yum.repos.d]# systemctl enable zabbix-agent在服務端安裝zabbix服務和mysql
[root@localhost yum.repos.d]# yum -y install mariadb mariadb-server zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get啟動mysql并設置開機自啟
[root@localhost yum.repos.d]# systemctl start mariadb [root@localhost yum.repos.d]# systemctl enable mariadb配置mysql
[root@localhost yum.repos.d]# mysql MariaDB [(none)]> create database zabbix charset utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all on *.* to zabbix@localhost identified by 'zabbix'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.01 sec)測試登錄mysql的zabbix用戶
[root@localhost yum.repos.d]# mysql -uzabbix -h localhost -pzabbix查看一下zabbix的服務
[root@localhost ~]# ll /usr/share/doc/zabbix-server-mysql-4.4.8/create.sql.gz -rw-r--r--. 1 root root 1476658 4月 27 18:21 /usr/share/doc/zabbix-server-mysql-4.4.8/create.sql.gz導入數據
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql-4.4.8/create.sql.gz | mysql -uzabbix -pzabbix -hlocalhost zabbix登錄數據庫并且查看數據
[root@localhost ~]# mysql MariaDB [zabbix]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | zabbix | +--------------------+ 5 rows in set (0.00 sec)MariaDB [zabbix]> show tables; +----------------------------+ | Tables_in_zabbix | +----------------------------+ | acknowledges | | actions | | alerts | | application_discovery | | application_prototype |修改zabbix的配置文件
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf DBPassword=zabbix啟動zabbix和httpd的相關服務并設置開機自啟
[root@localhost ~]# systemctl enable httpd zabbix-server zabbix-agent [root@localhost ~]# systemctl start httpd zabbix-server zabbix-agent查看端口
[root@localhost ~]# netstat -nlpt | grep -E "80|10050|10051" tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 14225/zabbix_agentd tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 15590/zabbix_server tcp6 0 0 :::10050 :::* LISTEN 14225/zabbix_agentd tcp6 0 0 :::10051 :::* LISTEN 15590/zabbix_server tcp6 0 0 :::80 :::* LISTEN 14281/httpd修改時間并啟動httpd
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/Shanghai [root@localhost ~]# systemctl restart httpd上傳修改字體防止亂碼
[root@localhost ~]# cd /usr/share/zabbix/assets/fonts/ [root@localhost fonts]# ls graphfont.ttf simkai.ttf [root@localhost fonts]# rm -rf graphfont.ttf [root@localhost fonts]# mv simkai.ttf graphfont.ttf其瀏覽器查看ip/zabbix
一直下一步到這個界面
密碼是:zabbix
通過服務端的get工具映射80端口如果是1 那么zabbix搭建成功
通過配置對lamp進行監控
通過tar包搭建ELK
在zabbix的服務端
安裝jdk
解壓elasticsearch的tar包
[root@localhost ELK]# tar xf elasticsearch-7.7.0-linux-x86_64.tar.gz [root@localhost ELK]# mv elasticsearch-7.7.0 /usr/local/elasticsearch創建一個elasticsearch數據存儲目錄,并賦予elk用戶擁有所屬權限
[root@localhost src]# groupadd elk [root@localhost src]# useradd -g elk elk -m [root@localhost src]# chown -R elk.elk /usr/local/elasticsearch/ [root@localhost elk]# ll /usr/local/elasticsearch/ 總用量 560 drwxr-xr-x. 2 elk elk 4096 5月 12 10:04 bin drwxr-xr-x. 3 elk elk 169 5月 20 10:44 config drwxr-xr-x. 9 elk elk 107 5月 12 10:04 jdk drwxr-xr-x. 3 elk elk 4096 5月 12 10:04 lib -rw-r--r--. 1 elk elk 13675 5月 12 09:58 LICENSE.txt drwxr-xr-x. 2 elk elk 6 5月 12 10:03 logs drwxr-xr-x. 45 elk elk 4096 5月 12 10:04 modules -rw-r--r--. 1 elk elk 534753 5月 12 10:03 NOTICE.txt drwxr-xr-x. 2 elk elk 6 5月 12 10:03 plugins -rw-r--r--. 1 elk elk 8165 5月 12 09:58 README.asciidoc創建一個elasticsearch數據存儲目錄,并賦予elk用戶擁有所屬權限
[root@localhost elk]# mkdir -p /data/elasticsearch [root@localhost elk]# chown -R elk.elk /data/elasticsearch修改elasticsearch配置文件,記得先備份一下配置文件再修改
[root@localhost src]# cd /usr/local/elasticsearch/config/ [root@localhost config]# cp elasticsearch.yml elasticsearch.yml.bak [root@localhost config]# vim elasticsearch.yml cluster.name: ELK-Cluster node.name: node-1 path.data: /data/elasticsearch path.logs: /usr/local/elasticsearch/logs network.host: 192.168.100.130 http.port: 9200 cluster.initial_master_nodes: ["node-1"]修改相關內核參數
[root@localhost config]# echo "vm.max_map_count=262144" >> /etc/sysctl.con [root@localhost config]# sysctl -p [root@localhost config]# vim /etc/security/limits.conf * soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536切換用戶elk來運行elasticsearch
[root@localhost config]# su - elk [elk@localhost ~]$ cd /usr/local/elasticsearch/ [elk@localhost elasticsearch]$ ./bin/elasticsearch -d如果啟動出現max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch/logs/ELK-Cluster.log
的錯誤 可以以下操作
檢查elasticsearch狀態,如下則表示正常運行
[elk@localhost elasticsearch]$ curl http://192.168.100.130:9200 {"name" : "node-1","cluster_name" : "ELK-Cluster","cluster_uuid" : "purTNbhaReGu7w1imX2Evg","version" : {"number" : "7.7.0","build_flavor" : "default","build_type" : "tar","build_hash" : "81a1e9eda8e6183f5237786246f6dced26a10eaf","build_date" : "2020-05-12T02:01:37.602180Z","build_snapshot" : false,"lucene_version" : "8.5.1","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search" }logstash配置安裝(docker端)
安裝jdk
[root@localhost ELK]# rpm -ivh jdk-8u131-linux-x64_.rpm解壓logstash
[root@localhost ELK]# tar xzvf logstash-7.7.0.tar.gz [root@localhost ELK]# mv logstash-7.7.0 /usr/local/logstash修改配置文件
[root@localhost ELK]# cd /usr/local/logstash/config/ [root@localhost config]# vim httpd.conf input {file {path => ["/data/docker/httpd/logs/other_vhosts_access.log"]type => "httpd-log"start_position => "beginning"} } output {elasticsearch {hosts => ["192.168.100.130:9200"]index => "httpd_log-%{+YYYY.MM.dd}"} }指定配置文件運行logstash
[root@localhost bin]# cd /usr/local/logstash/bin/ [root@localhost bin]# ./logstash -f /usr/local/logstash/config/httpd.conf & [root@localhost bin]# netstat -lntup |grep 9600 tcp6 0 0 127.0.0.1:9600 :::* LISTEN 39391/java安裝配置kibana
安裝jdk
[root@localhost src]# rpm -ivh jdk-8u131-linux-x64_.rpm解壓到/usr/local并重命名為kibana
[root@localhost src]# tar xzvf kibana-7.7.0-linux-x86_64.tar.gz [root@localhost src]# mv kibana-7.7.0-linux-x86_64 /usr/local/kibana修改配置文件
[root@localhost config]# cd /usr/local/kibana/config/ [root@localhost config]# vim kibana.yml server.port: 5601 server.host: "192.168.100.128" elasticsearch.hosts: ["http://192.168.100.130:9200"] logging.dest: /var/log/kibana.log給/var/log/kibana.log文件加權限
[root@localhost config]# touch /var/log/kibana.log [root@localhost config]# chmod 777 -R /var/log/kibana.log進入安裝目錄下/bin啟動kibana
[root@localhost config]# cd /usr/local/kibana/bin/ [root@localhost bin]# ./kibana --allow-root & [root@localhost bin]# netstat -nlpt | grep 5601 tcp 0 0 192.168.100.128:5601 0.0.0.0:* LISTEN 12490/./../node/bin查看kibana頁面 ip:5601(關閉防火墻)
總結
以上是生活随笔為你收集整理的通过docker搭建lamp+wordpress+ELK监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xilinx SDK使用
- 下一篇: ★ZOJ 3380 Patchouli'