在多节点部署的情况下,需要对nginx日志文件按节点名[hostname]做区分,但实际使用中发现日志文件夹中并没有输出这种文件,本以为access_log中不支持这个变量,其实看到error_log中的日志发现了问题所在。
access_log /logs/nginx/prd-$hostname-access.log main;
在多节点部署的情况下,需要对nginx日志文件按节点名[hostname]做区分,但实际使用中发现日志文件夹中并没有输出这种文件,本以为access_log中不支持这个变量,其实看到error_log中的日志发现了问题所在。
access_log /logs/nginx/prd-$hostname-access.log main;
机器重启以后,主从出现了问题,具体报错信息:
Slave failed to initialize relay log info structure from the repository
解决方案:
继续阅读MySQL复制报错(Slave failed to initialize relay log info structure from the repository)
logrotate 是 Linux 下的一个日志管理工具。通过 logrotate 可以很轻松地管理(拆分、压缩等)系统的所有日志文件。 通过配置,我们可以按日志大小或者固定周期来管理日志文件。
安装 logrotate
yum install logrotate
打开配置文件
vim /etc/logrotate.conf
在文件最后增加以下配置
/PATH/TO/YOUR/LOG/*.log { daily # 按日,也可以 weekly 按周,monthly 按月 dateext # 增加日期作为后缀 missingok # 如果文件不存在,忽略错误信息 rotate 30 # 保留 30 份 compress # 压缩 delaycompress # 延迟压缩,也就是本次拆分的文件在下次执行时再压缩 notifempty # 忽略空白文件 copytruncate # 拆分文件后,清空原有文件,而不是创建一个新文件 su root root # 解决没权限的问题 }
马上执行 logrotate
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
查看你的 log 文件所在目录,应该可以得到类似这个的结果
-rw-r--r-- 1 deploy deploy 0K 2012-06-27 23:39 production.log -rw-r--r-- 1 deploy deploy 27M 2012-06-27 23:15 production.log-20181217
mysql5.7之后的GTID复制模式一旦数据同步出错和之前的解决方案略有差异,这里就详细的记录一下。
继续阅读Mysql5.7GTID主从错误解决方案
无聊写个基础的排序玩玩。
echo "<pre>"; $d = [66,11,23,25,6,22,88,23,7,9]; $len = count($d); print_r($d); for($y=0;$y<$len-1;$y++){ echo "\n"; for($i=0;$i<$len-1-$y;$i++){ if($d[$i]>$d[$i+1]){ $tmp = $d[$i]; $d[$i] = $d[$i+1]; $d[$i+1] = $tmp; } echo $d[$i].' '; } } echo "\n"; print_r($d); echo "</pre>";
前端同事在做微信小程序时发现IOS获取的时间戳为空的问题,后来通过跟踪发现,原来是因为IOS系统不支持2018-08-08格式的时间导致的,
var mydata = ‘2018-08-08 11:00:00’;
console.log(“返回时间:” + mydata);
var time = Date.parse(new Date(mydata)) / 1000;
这样的代码安卓手机开发手机测试都没有问题,唯独IOS获取的日期为null,若干次百度调试后发现,原来IOS只识别2018/08/08这样的日期格式,
下面用正则替换2018-08-08日期格式为2018/08/08后问题解决(代码如下)
var mydata = ‘2018-08-08 11:00:00’;
mydata=data.replace(/-/g, ‘/’);
console.log(“返回时间:” + mydata);
var time = Date.parse(new Date(mydata)) / 1000;
转自:https://blog.csdn.net/zqtsx/article/details/74331076
基于docker-compose编排了一组etcd集群,如果想把其中一个节点替换掉应该怎么操作呢,网上有一些质量非常高的技术文章,但是有一些细节地方没有说清楚。
先把我的docker-compose.yml帖上来。
version: '3' services: etcd1: image: "quay.io/coreos/etcd:latest" network_mode: "host" volumes: - /data0/etcd/etcd1/:/etcd_data/:rw command: - etcd - --name - etcd1 - --data-dir - /etcd_data - --listen-peer-urls - http://${DOCKER_IIP}:2380 - --listen-client-urls - http://${DOCKER_IIP}:2379,http://127.0.0.1:2379 - --advertise-client-urls - http://${DOCKER_IIP}:2379 - --initial-advertise-peer-urls - http://${DOCKER_IIP}:2380 - --discovery - http://discovery.etcd.io/TTTTTTTTTTTTTTTTTTTTTTT
下面来进行替换节点的操作,先查看一下节点列表
/ # etcdctl member list 1ca4fc0d4b2c9fa2: name=etcd1 peerURLs=http://192.168.56.42:2380 clientURLs=http://192.168.56.42:2379 isLeader=true 4cf04322e0117c69: name=etcd4 peerURLs=http://192.168.56.33:2380 clientURLs=http://192.168.56.33:2379 isLeader=false 6dc5120e6c9ba574: name=etcd3 peerURLs=http://192.168.56.42:2382 clientURLs=http://192.168.56.42:2381 isLeader=false
先拿掉etcd4。
/ # etcdctl member remove 4cf04322e0117c69 Removed member 4cf04322e0117c69 from cluster
再进行添加操作。
/ # etcdctl member add etcd2 http://192.168.56.33:2380 Added member named etcd2 with ID d401a8b3607279fc to cluster ETCD_NAME="etcd2" ETCD_INITIAL_CLUSTER="etcd1=http://192.168.56.42:2380,etcd3=http://192.168.56.42:2382,etcd2=http://192.168.56.33:2380" ETCD_INITIAL_CLUSTER_STATE="existing"
接下来是重点了,把这几个环境变量记录一下,修改一下原来的docker-compose.yml,进行新节点启动。
version: '3' services: etcd2: image: "quay.io/coreos/etcd:latest" network_mode: "host" volumes: - /data0/etcd/etcd2/:/etcd_data/:rw command: - etcd - --name - etcd2 - --data-dir - /etcd_data - --listen-peer-urls - http://${DOCKER_IIP}:2380 - --listen-client-urls - http://${DOCKER_IIP}:2379,http://127.0.0.1:2379 - --advertise-client-urls - http://${DOCKER_IIP}:2379 - --initial-advertise-peer-urls - http://${DOCKER_IIP}:2380 #- --discovery #- http://discovery.etcd.io/df65ece6e8eef0db7548c7a51adb894e - --initial-cluster-state - existing - --initial-cluster - etcd1=http://192.168.56.42:2380,etcd2=http://192.168.56.33:2380,etcd3=http://192.168.56.42:2382
将原来的–discovery临时注释,添加下面几行,然后进行节点启动,节点启动成功之后,把上面这一次临时修改还原就可以。
grafana有好多种权限认证的方式,我有一个需求就是在内网环境下可以有一个只读的帐户,不需要登录就可以访问查看数据报表。
看了下配置文件中支持的【auth.XXX】,发现了[auth.proxy]能满足我的需求,配置如下。
继续阅读grafana 添加游客状态下只读帐户
记录一个奇葩的问题,今天在调ELK+filebeat,将Laravel日志解析之后,写入elasticsearch发现,数据没了。
继续阅读记录一个elk数据写入不成功的问题
使用composer一键安装
composer create-project composer/satis
接着在项目根目录下创建package.json文件
{ "name": "satis packages", "homepage": "http://package.gbk.pw", "repositories": [ { "type": "git", "url": "https://git.gbk.pw/groupxx/test.git" } ], "require":{ "gbk/test":"dev-master" } }