引用博文:https://blog.csdn.net/qq_22648091/article/details/114140816
侵权联删
创建三台 云主机分别命名为 elk01、elk02 和 elk03,Ansible 主机可以使用上一题的环境。要求 Ansible 节点编写剧本,执 行 Ansible 剧本可以在这三个节点部署 ELK 集群服务(在/root 目录下创建 install_elk 目录作 为 ansible 工作目录,部署的入口文件命名为 install_elk.yaml)。具体要求为三个节点均安装 Elasticserach 服务并配置为 Elasticserach 集群;kibana 安装在第一个节点;Logstash 安装在 第二个节点。
ELK需要的二进制包,如下是下载链接
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.0-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/kibana/kibana-7.17.0-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/logstash/logstash-7.17.0-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.0-linux-x86_64.tar.gz
地址规划:
| 角色 | 主机名 | IP地址 |
|---|---|---|
| ansible母机 | ansible | 10.18.4.46 |
| ela01 && kibana | elk-1 | 10.18.4.201 |
| ela02 && logstash | elk-2 | 10.18.4.202 |
| ela03 | elk-3 | 10.18.4.203 |
基础准备
#域名解析(all node)
cat >> /etc/hosts <<EOF
10.18.4.46 ansible
10.18.4.201 elk-1
10.18.4.202 elk-2
10.18.4.203 elk-3
EOF
#####centos7.9 node#####
hostnamectl set-hostname elk-1
hostnamectl set-hostname elk-2
hostnamectl set-hostname elk-3
####Ansible node#####
mkdir /root/install_elk
touch /root/install_elk/install_elk.yaml
mkdir -p /root/install_elk/roles/{ela,kib,log}/{files,handlers,tasks,templates,vars}
#在ansible节点与三台节点建立免密钥通信
ssh-keygen
ssh-copy-id elk-1
ssh-copy-id elk-2
ssh-copy-id elk-3
#ansible主机清单
cat >> /etc/ansible/hosts <<EOF
[ela]
elk-1 node_name=elk-1
elk-2 node_name=elk-2
elk-3 node_name=elk-3
[kib]
elk-1
[log]
elk-2
EOF
项目目录结构

/root/install_elk/install_elk.yaml
cat > /root/install_elk/install_elk.yaml <<EOF
---
- hosts: ela
gather_facts: no
remote_user: root
roles:
- ela
- hosts: kib
gather_facts: no
remote_user: root
roles:
- kib
- hosts: log
gather_facts: no
remote_user: root
roles:
- log
EOF
/root/install_elk/roles/ela/tasks/main.yaml入口文件
cat > /root/install_elk/roles/ela/tasks/main.yaml <<EOF
- name: 安装Java环境
unarchive:
src: jdk-8u144-linux-x64.tar.gz
dest: /opt
list_files: yes
- name: 添加Java环境变量
shell: echo 'export JAVA_HOME=/opt/jdk1.8.0_144' >> /etc/profile && echo 'export PATH=$PATH:/opt/jdk1.8.0_144/bin' >> /etc/profile
- name: 生效环境变量
shell: source /etc/profile
- name: 创建用户
user:
name: ela
- name: 传输本地软件包到远程主机并且解压到指定目录
unarchive:
src: elasticsearch-7.17.0-linux-x86_64.tar.gz
dest: /opt
owner: ela
group: ela
list_files: yes
register: ret
- name: 创建软链接
file:
src: /opt/{{ ret.files.0 | regex_replace('/.*') }}
dest: /opt/elasticsearch
state: link
- name: 传输配置文件
template:
src: elasticsearch.j2
dest: /opt/elasticsearch/config/elasticsearch.yml
owner: ela
group: ela
- name: 传输系统配置文件
copy:
src: limits.conf
dest: /etc/security/limits.conf
- name: 传输系统配置文件
copy:
src: sysctl.conf
dest: /etc/sysctl.conf
- name: 加载 /etc/sysctl.conf文件,使内核参数生效
shell: sysctl -p
- name: 启动服务
# 使用ela用户执行此命令
become: yes
become_user: ela
command:
# argv 是一个列表,存放了需要执行的命令及其参数
# 一行一个
argv:
- nohup
- /opt/elasticsearch/bin/elasticsearch
- -d
EOF
/root/install_elk/roles/ela/templates/elasticsearch.j2,elasticsearch的主配置文件模板
cat > /root/install_elk/roles/ela/templates/elasticsearch.j2 <<EOF
cluster.name: elk
node.name: {{ node_name }}
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts:
- 10.18.4.201
- 10.18.4.202
- 10.18.4.203
cluster.initial_master_nodes: ["elk-1","elk-2","elk-3"]
EOF
/root/install_elk/roles/ela/files/limits.conf,系统文件句柄数配置文件
cat > /root/install_elk/roles/ela/files/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
EOF
/root/install_elk/roles/ela/files/sysctl.conf,系统的内核配置文件
只有
# elasticsearch下面的配置内容是必须的,其他可选
cat > /root/install_elk/roles/ela/files/sysctl.conf <<EOF
vm.max_map_count=655360
EOF
验证:

/root/install_elk/roles/kib/tasks/main.yaml任务入口文件
cat > /root/install_elk/roles/kib/tasks/main.yaml <<EOF
- name: 传输本地软件包到远程主机并且解压到指定目录
unarchive:
src: kibana-7.17.0-linux-x86_64.tar.gz
dest: /opt
owner: ela
group: ela
list_files: yes
register: ret
- name: 创建软链接
file:
src: /opt/{{ ret.files.0 | regex_replace('/.*') }}
dest: /opt/kibana
state: link
- name: 创建日志与PID存放目录
shell: mkdir -p /var/log/kibana /run/kibana
- name: 给如上目录设置权限
shell: chown -R ela:ela /var/log/kibana /run/kibana
- name: 传输配置文件
copy:
src: kibana.yml
dest: /opt/kibana/config/kibana.yml
- name: 传输服务管理文件
template:
src: kibana.service.j2
dest: /etc/systemd/system/kibana.service
- name: 启动服务
systemd:
name: kibana
state: started
daemon_reload: yes
EOF
/root/install_elk/roles/kib/files/kibana.ymlKibana 程序的配置文件
cat > /root/install_elk/roles/kib/files/kibana.yml <<EOF
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.18.4.201:9200"]
i18n.locale: "zh-CN"
pid.file: /run/kibana/kibana.pid
logging.dest: /var/log/kibana/kibana.log
EOF
/root/install_elk/roles/kib/templates/kibana.service.j2 ,Kibana 程序管理模板文件
cat > /root/install_elk/roles/kib/templates/kibana.service.j2 <<EOF
[Unit]
Description=Kibana
Documentation=https://www.elastic.co
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=ela
Group=ela
ExecStart=/opt/kibana/bin/kibana
ExecStop=/bin/pkill -F "/run/kibana/kibana.pid"
Restart=on-failure
RestartSec=3
StartLimitBurst=3
StartLimitInterval=60
WorkingDirectory=/opt/kibana
StandardOutput=journal
StandardError=inherit
[Install]
WantedBy=multi-user.target
EOF
验证:


/root/install_elk/roles/log/tasks/main.yaml任务入口文件
cat > /root/install_elk/roles/log/tasks/main.yaml <<EOF
- name: 创建日志目录
file:
path: /var/log/logstash
state: directory
- name: 服务日志目录权限
shell: chown -R ela:ela /var/log/logstash
- name: 传输本地软件包到远程主机并且解压到指定目录
unarchive:
src: logstash-7.17.0-linux-x86_64.tar.gz
dest: /opt
list_files: yes
register: ret
- name: 创建软链接
file:
src: /opt/{{ ret.files.0 | regex_replace('/.*') }}
dest: /opt/logstash
state: link
- name: 传输配置文件
template:
src: logstash.yml
dest: /opt/logstash/config/logstash.yml
- name: 传输管道配置文件
copy:
src: logstash.conf
dest: /opt/logstash/config/logstash-sample.conf
- name: 传输系统服务文件
template:
src: logstash.service.j2
dest: /etc/systemd/system/logstash.service
- name: 启动 logstash
systemd:
name: logstash
state: started
daemon_reload: yes
- name: restart logstash
systemd:
name: logstash
state: restarted
daemon_reload: yes
#- name: 启动服务
# become: yes
# become_user: ela
# shell: sh /opt/logstash/bin/logstash -f /opt/logstash/config/logstash-sample.conf
EOF
/root/install_elk/roles/log/templates/logstash.yml,Logstash 程序主配置文件
cat > /root/install_elk/roles/log/templates/logstash.yml <<EOF
http.host: "0.0.0.0"
path.logs: /var/log/logstash/
EOF
/root/install_elk/roles/log/files/logstash.conf,Logstash 程序管道配置文件
cat > /root/install_elk/roles/log/files/logstash.conf <<EOF
#将本地的/var/log/yum.log内日志标准输入
input {
file {
path => "/var/log/yum.log"
type => "yum_log"
start_position => "beginning"
}
}
#标准输出到elasticsearch中
output {
elasticsearch {
hosts => ["10.18.4.201:9200","10.18.4.202:9200","10.18.4.203:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
EOF
/root/install_elk/roles/log/templates/logstash.service.j2,Logstash 程序进程管理模板文件
cat > /root/install_elk/roles/log/templates/logstash.service.j2 <<EOF
Unit]
Description=logstash
[Service]
Type=simple
ExecStart=/opt/logstash/bin/logstash "-f" "/opt/logstash/config/*.conf"
Restart=always
WorkingDirectory=/
LimitNOFILE=65535
TimeoutStopSec=infinity
[Install]
WantedBy=multi-user.target
EOF
验证:
在任务栏中再到管理 -》堆栈管理。

创建一个索引模式,选择所有的索引。



测试安装一个软件来生成数据。

[root@elk-2 ~]#yum -y install httpd
来到discover中检索数据。


我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal