分类 技术 下的文章

技术

记录一个阿里云Swarm问题

July 8, 2019

容器组里有个状态为未知的容器,去看了下它的日志 也是空的...于是乎尝试了下重启该容器,但没有效果...后来发现似乎是容器的network里的数据冲突导致的,于是乎先删除容器,然后执行

docker network disconnect --force 容器名

然后对应用进行重新部署...就解决掉了

技术

清理WebKitBrowser内存

June 25, 2019

最近开发小工具用到了WebKitBrowser,遇到了内存一直增加导致程序崩溃的问题。本篇将讲述如何优化WebKitBrowser内存使用量。

1、发现使用Navigate方法会比new Uri更加消耗内存,大概在20%左右。
2、在DocumentCompleted事件中使用Dispose()进行释放资源,如下

  private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
  {
    Getdata();
    browser.Dispose();
  }
技术

仅4步即可部署sonarqube并配置Jenkins完成代码审计

June 10, 2019

忙完毕业季有空更新博客了,这里docker安装步骤就不重复了,请看 docs.xiz.im

1、运行DB容器

docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres

2、运行sonarqube容器,账号密码都为admin,地址为http://IP:9300

docker run --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -p 9000:9000 -d sonarqube

3、jenkins安装sonar Scanner插件

4、新建job,在Post Steps中配置「Execute SonarQube Scanner」如下图内容
sonar.png

sonar.projectKey=标识
sonar.projectName=项目名
sonar.projectVersion=1.0
sonar.sources=.
sonar.java.binaries=.
sonar.sourceEncoding=UTF-8
sonar.language=java

PS:官方参数文档https://docs.sonarqube.org/latest/analysis/analysis-parameters/

效果图如下(结合了GitLab webhook):
jenkins.png
sonarqube.png

技术

十步轻松部署ELK收集Docker容器日志

December 12, 2018

架构图:
tu.png
简述:Filebeat安装在各个跑Docker的服务器中,对接Elasticsearch和Logstash
本文中系统为:Centos7.5,跑ELK的服务器配置为4核8G内存 实验中吃了3.05G内存
第一步,安装docker

参考:http://docs.xiz.im/700399

第二步,获取ELK images

docker pull sebp/elk

第三步,修改内存配置

sysctl -w vm.max_map_count=262144
vi /etc/sysctl.conf
#在尾部添加
vm.max_map_count=262144

第四步,允许IPV4转发

vim  /usr/lib/sysctl.d/00-system.conf
#在最下面添加
net.ipv4.ip_forward=1
#重启网络服务
systemctl restart network

第五步,运行容器

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it  --log-opt max-size=500m --log-opt max-file=1 --restart=always  --name elk sebp/elk
#参数:开放5601、9200、5044端口,限制容器日志大小为500MB最多一个日志文件,随着Docker启动

第六步,进入容器 修改Logstash

docker exec it elk bash
vi /etc/logstash/conf.d/02-beats-input.conf
#删除关于SSL的配置信息,一共3条

第七步,到需要收集日志的服务器上安装「Filebeat」

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.1-x86_64.rpm
rpm -vi filebeat-6.5.1-x86_64.rpm

第八步,编辑Filebeat的配置

vi /etc/filebeat/filebeat.yml
#24行,修改为true
enabled: true
#28行,修改为
- /var/lib/docker/containers/*/*-json.log
#128行,修改为如下配置,elk是域名 建议使用域名方式
host: "elk:5601"

在148行中的elasticsearch配置修改成如下,elk是域名 建议使用域名方式
tu2.png

第九步,启用并配置elasticsearch模块

filebeat modules enable elasticsearch
filebeat setup
service filebeat start
systemctl enable filebeat

第十步,在kibana中建立索引
「management」>「Index Patterns」
tu3.png

我弄了一个nginx的容器来测试日志传输,最后实验成果了,效果如下图
tu4.png

拓展
1.定期清除收集的日志,如7天清理一次

#设立定时任务
crontab -e
0 1 */7 * * sh~/clean.sh
#创建一个sh脚本
vi clean.sh
time=`date +%Y.%m.%d -d "7 days ago"`
echo $shijian
curl -XDELETE "http://10.140.10.51:9200/filebeat-6.5.1-${time}"
技术

Redis4.0.11和5版本的自动安装脚本

October 24, 2018

下载脚本

curl -o /root/redis.sh https://www.xiz.im/github/home/redis/redis.sh

编辑脚本,选择你Redis版本

vi redis.sh #
Redis_version="redis-5.0.0"
#默认是5.0.0

部署Redis(master)

sh redis.sh master

部署Slave

sh redis.sh slave 192.168.1.1
#注意 这里的ip是主redis的ip

部署哨兵

sh redis.sh sentinel 192.168.1.1

有时候海底线缆嗝屁了的时候可以从我的公共库中下载Redis的安装包,这时候就需要到 https://www.xiz.im/github/home/redis/中获取下载地址然后替换脚本中的下载地址