Translate

2017年12月4日 星期一

把 apache log 同步到 kinesis firehose

使用 Kinesis Agent进行 Amazon Kinesis Firehose 写入操作http://docs.aws.amazon.com/zh_cn/firehose/latest/dev/writing-with-agents.html

步驟
1. 建立 kinesis firehose
2. 利用lambda做資料整理,把 apache log 轉 json,時間格式換成 elasticsearch 能吃的
3.開 aws elasticsearch service
4.安裝Amazon Kinesis Firehose agent自動化,下面是安裝範例

#!/bin/bash
sudo yum install aws-kinesis-agent -y
sudo usermod -a -G root aws-kinesis-agent-user
sudo chmod g+rx /var/log/httpd
setting='{
"cloudwatch.emitMetrics": true,
"firehose.endpoint": "https://firehose.us-east-1.amazonaws.com",
"flows": [
{
"filePattern": "/var/log/httpd/error_log*",
"deliveryStream": "apache_error_log"
}
]
}' ;
echo $setting > /etc/aws-kinesis/agent.json

sudo service aws-kinesis-agent start
sudo chkconfig aws-kinesis-agent on

看 log /var/log/aws-kinesis-agent/aws-kinesis-agent.log

--------------------
#aws #elasticsearch #firehose #kinesis

2017年9月29日 星期五

Automating Deployment of Lambda-based Applications 實作

發現 aws 官方有

Automating Deployment of Lambda-based Appli aws, DevOps, lambda,  cations

範例

照著實作過程中一樣遇到一些坑

S3 的 bucket 都要在同一個 region

samTemplate.yaml 裡面的 nodejs版本要設 4.3 不然最後測試會error

以上



#aws
#DevOps
#lambda 

2017年6月27日 星期二

aws 自訂 session

為了讓不同的ec2主機上的 php 能讀取相同的 session

之前 google 了一些文章

作法就是把 session 存在  DynamoDB

後來發現官方已有做好的 sdk SessionHandler
https://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/dynamodb-session-handler.html

也找到一篇範例
http://aws.mannem.me/?p=1020

#aws
#php

使用上也算方便
簡單範例:
<?php
ini_set("display_errors", "On"); // 顯示錯誤是否打開( On=開, Off=關 )
error_reporting(E_ALL & ~E_NOTICE);

require 'vendor/autoload.php';
use Aws\Credentials\CredentialProvider;
use Aws\DynamoDb\SessionHandler;

$sdk = new Aws\Sdk([
'region' => 'ap-northeast-1',
'version' => 'latest',
'http' => [
'debug' => true
]
]);

$dynamoDb = $sdk->createDynamoDb();

$sessionHandler = SessionHandler::fromClient($dynamoDb, [
'table_name' => 'sessions'
]);

$sessionHandler->register();

// Start the session
session_start();

// Alter the session data
// $_SESSION['user.name'] = 'xxxx';
// $_SESSION['user.role'] = 'admin';
// Close the session (optional, but recommended)
// session_write_close();

echo "successfully connected";

MAC 產 RSA 公私鑰

//進去
openssl
//產私鑰
genrsa -out rsa_private_key.pem 1024

//轉PEM
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt

//產對應公鑰
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

2017年6月21日 星期三

mysql 字串處理

SET SQL_SAFE_UPDATES=0;
UPDATE `table`
SET `url`= CONCAT('https://www.youtube.com/feeds/videos.xml?user=',SUBSTRING_INDEX(SUBSTRING_INDEX(`feedurl`,'/',-2),'/',1))
WHERE `url` LIKE '%http://gdata.youtube.com/feeds/base/users%';
SET SQL_SAFE_UPDATES=1;


#mysql

2017年5月24日 星期三

Xcode8一直出現AQDefaultDevice (XXX): skipping input stream 0 0 0x0的log

Xcode8一直連續出現AQDefaultDevice (XXX): skipping input stream 0 0 0x0的log

解決方法
1. Product -->Scheme-->Edit Scheme
2. Arguments
3.Environment Variables 加一個環境變量 OS_ACTIVITY_MODE 值設為"disable" #ios #xcode

2017年5月23日 星期二

練習在 AWS Lambda 上寫 python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2015-12-11 17:18:38
# @Author  : Your Name (you@example.org)
# @Link    : http://example.org
# @Version : $Id$

import boto3

# Let's use Amazon S3
s3 = boto3.resource('s3')

#印出所有bucket name
# for bucket in s3.buckets.all():
#     print(bucket.name)

#上傳檔案
#s3.Object('paul-bucket', 'hello.txt').put(Body=open('ttt', 'rb'))

#下載
aaa=s3.Object('paul-bucket', 'hello.txt').get()
print(aaa['Body'])

#下載
client = boto3.client('s3')
response = client.get_object(Bucket='paul-bucket',Key='hello.txt')
contents = response['Body'].read()
print(contents)

AWS Lambda 函數提供暫存空間,應該怎麼做?
每個 Lambda 函數在自己的 /tmp 目錄中都有 500 MB 的非持久性磁碟空間。
#aws #aws #lambda #python

2017年5月19日 星期五

用 jenkins , docker , aws ECS , aws ECR , bitbucket 建立一個 CI/CD

為了能爽爽的只要push到bitbucket後就能一口氣自動化到AWS環境

jenkins 所需的套件
Docker build and publish plugin
Amazon ECR plugin
BitBucket Plugin

EC2要安裝jq
https://stedolan.github.io/jq/

jenkins 備份
http://vulpesadn.blogspot.tw/2013/09/jenkins_8254.html


#aws #DevOps #docker #jenkins

Docker + aws ecs 研究筆記


一開始主要照著 AWS ECS 裡的基本範例進行
http://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html

然後用 AWS ECS 來輕鬆部署群集
建立 ec2 時要選擇 Amazon ECS-optimized AMI (針對docker優化過的機器)
然後設置
#!/bin/bash
yum update -y ecs-init
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

這樣 這台 EC2 才能和你的 ECS 關聯

官方 image 集中地
https://hub.docker.com/

Amazon Linux 的 Docker imagehttps://lambda-linux.io/


然後發現了這本電子書
https://www.gitbook.com/book/philipzheng/docker_practice/details


Docker官網
https://docs.docker.com/


#用一個 image 開新 container
$ docker run "image_name"

#更新一個 image (更新)

$ docker commit -m "message" -p "container_id" "tag"


#建立容器指定本機port 7000 指到 容器port 80並啟動apache

docker run -idt -p 7000:80 [RUI]/amazonlinux:latest /sbin/init

#複製資料(cp完後要對容器restart)
docker cp /Users/paul/Downloads/sampleapp/index.html [CID]:/var/www/html

#用資料卷
docker run -idt -p 5000:80 -P --name web -v /Users/paul/Documents/amazon-linux-docker-images/html:/var/www/html amazonlinux:latest /sbin/init

commit時資料卷資料不會更著複製

#進去

docker exec -ti cid bash

#用資料卷和本機共用aws credentials

cat ~/.aws/credentials


docker run -idt -p 5000:80 -P --name aws -v /Users/paul/.aws/:/root/.aws/ amazonlinux:latest /sbin/init

docker run -idt -p 7000:80 -v /Users/paul/.aws/:/root/.aws/ -v /Users/paul/Documents/amazon-linux-docker-images/html:/var/www/html [RUI]/udn/amazonlinux:latest /sbin/init



docker run -idt -p 6000:80 -v /Users/paul/.aws/:/root/.aws/ -v /Users/paul/Documents/111222:/var/www/html [CID] /sbin/init 

 清理log
https://groups.google.com/forum/#!topic/docker-dev/mIZ7UDp7go0
To find out where the log file is :   docker inspect --format='{{.LogPath}}' $INSTANCE_ID

For cleaning the logs : sudo sh -c ": > $(docker inspect --format='{{.LogPath}}' $INSTANCE_ID)"


ecs收集log上傳到CloudWatch
http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/using_cloudwatch_logs.html


#aws
#DevOps 

2017年5月16日 星期二

jenkins研究

jenkins

Set up a build pipeline with Jenkins and Amazon ECS

預計達成的目標
自動上版
自動測試



android 在 jenkins 上編譯

#需要32位元環境
sudo yum -y install glibc.i686

#需要lib
sudo yum install zlib.i686

#libstdc++.so.6問題
#http://blog.csdn.net/qianlong4526888/article/details/8780171



#安裝android  tool

#操作說明
#https://developer.android.com/studio/command-line/sdkmanager.html


#google drive操作
https://github.com/prasmussen/gdrive#downloads

先建個資料夾,取得ID
就固定放這就好
然後用slack通知




#DevOps
#jenkins


2017年4月17日 星期一

安裝 Hbase


$ wget http://apache.stu.edu.tw/hbase/stable/hbase-1.0.1.1-bin.tar.gz

$ tar xfz hbase-1.0.1.1-bin.tar.gz

$ cd hbase-1.0.1.1


精選文章

合約 陷阱